#include <iostream>
using namespace std;

void func(int a){
  cout << "func::a " << a << endl;
}
void func(int a, int b) {
  cout << "func::a" << a << " b: " << b << endl;
}

// 定义一个函数类型
typedef void (Fn)(int);

// 定义一个指针类型，该类型指针指向一个函数
typedef void (*Fnp)(int, int);


int main() {
  // 定义一个指针，指向一个 Fnp 类型的函数
  Fn *fn = &func;
  fn(1);
  // p(1,2);  Error
  
  Fnp fnp = &func;
  fnp(1,2);

  // 直接定义一个函数指针
  void (*fnp2)(int, int);
  fnp2 = &func;
  fnp2(2,3);

  return 0;
}
